import { MAP_CONFIG } from './config.js'

function addArea(area, layer) {
  const pointArr = area.map(
    (point) => new Zondy.Object.Point2D(point[0], point[1])
  )
  //设置区要素的几何信息
  const gArc = new Zondy.Object.Arc(pointArr)
  //构成区要素折线
  const gAnyLine = new Zondy.Object.AnyLine([gArc])
  //构成区要素
  const gRegion = new Zondy.Object.GRegion([gAnyLine])
  //构成区要素的几何信息
  const fGeom = new Zondy.Object.FeatureGeometry({ RegGeom: [gRegion] })

  //设置区要素的图形参数信息
  const cRegionInfo = new Zondy.Object.CRegionInfo({
    //结束填充颜色，在渐变模式下设置才有意义。（请参考MapGIS颜色库中颜色编号）
    EndColor: 1,
    //填充颜色，在渐变模式下设置才有意义。（请参考MapGIS颜色库中颜色编号）
    FillColor: 7,
    //填充模式。取值范围：0（常规模式）、1（线性渐变模式）、2（矩形渐变模式）、3（圆形渐变模式）。
    FillMode: 0,
    //填充图案笔宽
    OutPenWidth: 1,
    //填充图案角度，取值范围为0~360。
    PatAngle: 1,
    //填充图案颜色（请参考MapGIS颜色库中颜色编号）
    PatColor: 3,
    //填充图案高度
    PatHeight: 1,
    //填充图案ID（请参考MapGIS符号库中线符号编号）
    PatID: 1,
    //填充图案宽度
    PatWidth: 1,
  })
  //要素图形参数信息
  const graphicInfo = new Zondy.Object.WebGraphicsInfo({
    InfoType: 3,
    RegInfo: cRegionInfo,
  })
  //设置区要素的属性信息
  const attValue = ['自定义面要素']
  //创建一个新的区要素
  const newFeature = new Zondy.Object.Feature({
    AttValue: attValue,
    fGeom: fGeom,
    GraphicInfo: graphicInfo,
  })
  newFeature.setFType(3)
  //创建一个要素数据集
  const featureSet = new Zondy.Object.FeatureSet()
  const fldNumber = 1
  const fldType = ['string']
  const fldName = ['name']
  const cAttValue = new Zondy.Object.CAttStruct({
    FldNumber: fldNumber,
    FldType: fldType,
    FldName: fldName,
  })
  featureSet.AttStruct = cAttValue
  featureSet.addFeature(newFeature)
  //创建一个要素编辑服务对象
  const editDocFeature = new Zondy.Service.EditDocFeature(
    MAP_CONFIG.docName,
    MAP_CONFIG.areaLayerIndex,
    {
      ip: MAP_CONFIG.ip,
      port: MAP_CONFIG.port,
    }
  )
  editDocFeature.add(featureSet, (data) => {
    onAddAreaSuccess(data, layer)
  })
}

function onAddAreaSuccess(data, layer) {
  if (data.succeed) {
    alert('添加区要素成功！')
    layer.refresh()
  } else {
    alert('添加区要素失败！')
  }
}

export default addArea
